﻿using System;

namespace Pap.Data
{
    /// <summary>
    /// 
    /// </summary>
    public interface IwfStepInstance : IEntity
    {
        /// <summary>
        /// Gets or sets the step instance ID.
        /// </summary>
        /// <value>
        /// The step instance ID.
        /// </value>
        Guid StepInstanceID { get; set; }

        /// <summary>
        /// Gets or sets the process instance ID.
        /// </summary>
        /// <value>
        /// The process instance ID.
        /// </value>
        Guid ProcessInstanceID { get; set; }

        /// <summary>
        /// Gets or sets the step ID.
        /// </summary>
        /// <value>
        /// The step ID.
        /// </value>
        Guid StepID { get; set; }

        /// <summary>
        /// Gets or sets the action type ID.
        /// </summary>
        /// <value>
        /// The action type ID.
        /// </value>
        Nullable<Guid> ActionTypeID { get; set; }

        /// <summary>
        /// Gets or sets the previous step instance ID.
        /// </summary>
        /// <value>
        /// The previous step instance ID.
        /// </value>
        Nullable<Guid> PreviousStepInstanceID { get; set; }

        /// <summary>
        /// Gets or sets the creation date.
        /// </summary>
        /// <value>
        /// The creation date.
        /// </value>
        DateTime CreationDate { get; set; }

        /// <summary>
        /// Gets or sets the completion date.
        /// </summary>
        /// <value>
        /// The completion date.
        /// </value>
        Nullable<DateTime> CompletionDate { get; set; }

        /// <summary>
        /// Gets or sets the user ID.
        /// </summary>
        /// <value>
        /// The user ID.
        /// </value>
        Nullable<Guid> UserID { get; set; }

        /// <summary>
        /// Gets or sets the comments.
        /// </summary>
        /// <value>
        /// The comments.
        /// </value>
        string Comments { get; set; }

        /// <summary>
        /// Gets the wf step.
        /// </summary>
        IwfStep wfStep { get; }

        /// <summary>
        /// Gets the previous step instance.
        /// </summary>
        IwfStepInstance PreviousStepInstance { get; }

        /// <summary>
        /// Gets the user.
        /// </summary>
        IUser User { get; }

        /// <summary>
        /// Gets the type of the wf action.
        /// </summary>
        /// <value>
        /// The type of the wf action.
        /// </value>
        IwfActionType wfActionType { get; }

        /// <summary>
        /// Gets the wf process instance.
        /// </summary>
        IwfProcessInstance wfProcessInstance { get; }

    }
}
